首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >融宽df与熊猫长

融宽df与熊猫长
EN

Stack Overflow用户
提问于 2019-12-16 06:20:05
回答 2查看 32关注 0票数 0

我正在从disk - print(pd.read_csv('data.csv'))读取csv

代码语言:javascript
复制
    Unnamed:0    Company1    Company2    Company3 ...
0   2019-01-01   €100,000    €100,000    €100,000
1   2019-01-02   €100,000    €100,000    €100,000
2   2019-01-03   €100,000    €100,000    €100,000
3   2019-01-04   €100,000    €100,000    €100,000

正在读取的CSV是df上游的结果,并且未命名日期列被索引。我的问题是,我有70+公司,因此,我有70+专栏。当我将这段代码写到一个表中时,我希望公司归入"company_name“列,然后将当前值"Company1”、"Company2“等归入名为"predicted”的列。我将写入,然后使用Spark将这个最终的df写到一个表中。

这是我想要的格式:

代码语言:javascript
复制
date         company_name    predicted
2019-01-01   Company1        €100,000
2019-01-01   Company2        €100,000
2019-01-01   Company3        €100,000
2019-01-02   Company1        €100,000
2019-01-02   Company2        €100,000
2019-01-02   Company3        €100,000

我已经尝试过了:

代码语言:javascript
复制
my_dict = pd.read_csv('data.csv')
df = pd.DataFrame(my_dict)
df.rename(columns={'Unnamed:0': 'date'}, inplace=True)
df = df.melt(id_vars=['date'], value_vars=df.columns[1:], var_name='company_name', 
value_name='predicted')
df.sort_values(by=['date'], inplace=True)
print(df)

它几乎可以工作,但是date列有NaN值:

代码语言:javascript
复制
        date   company_name   predicted
0       NaN    Company1       €100,000
1       NaN    Company1       €100,000
2       NaN    Company1       €100,000
3       NaN    Company1       €100,000
4       NaN    Company1       €100,000
EN

回答 2

Stack Overflow用户

发布于 2019-12-16 06:56:17

这似乎起作用了:

代码语言:javascript
复制
import pandas as pd
df = pd.read_csv('data.csv')
df.rename( columns={'Unnamed: 0':'yyyy_mm_dd'}, inplace=True)
df = df.melt(id_vars=['yyyy_mm_dd'])
df.rename(columns={'variable': 'company'}, inplace=True)
df.rename(columns={'value': 'predicted'}, inplace=True)

df['predicted'] = df['predicted'].str.replace('€', '')

输出df:

代码语言:javascript
复制
       yyyy_mm_dd      variable       value
0      2019-12-10      Company1       100,000
1      2019-12-11      Company1       100,000
2      2019-12-12      Company1       100,000
票数 0
EN

Stack Overflow用户

发布于 2019-12-16 07:16:21

您可以像这样使用熔化:

代码语言:javascript
复制
df.rename(columns={'Unnamed:0':'date'}, inplace=True) 
df.melt(col_level=0, id_vars='date').sort_values(by='date').reset_index(drop=True)                                                                                        

          date  variable     value
0   2019-01-01  Company1  €100,000
1   2019-01-01  Company2  €100,000
2   2019-01-01  Company3  €100,000
3   2019-01-02  Company1  €100,000
4   2019-01-02  Company2  €100,000
5   2019-01-02  Company3  €100,000
6   2019-01-03  Company1  €100,000
7   2019-01-03  Company2  €100,000
8   2019-01-03  Company3  €100,000
9   2019-01-04  Company1  €100,000
10  2019-01-04  Company2  €100,000
11  2019-01-04  Company3  €100,000
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59348556

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档