我正在从disk - print(pd.read_csv('data.csv'))读取csv
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写到一个表中。
这是我想要的格式:
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我已经尝试过了:
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值:
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发布于 2019-12-16 06:56:17
这似乎起作用了:
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:
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发布于 2019-12-16 07:16:21
您可以像这样使用熔化:
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,000https://stackoverflow.com/questions/59348556
复制相似问题