我有这些数据:
1975,a,b
1976,b,c
1977,b,a
1977,a,b
1978,c,d
1979,e,f
1980,a,f
我想要一个包含年份和项目的两列列表,如下所示:
1975,a
1975,b
...
import pandas
# Set column names
colnames=['Date','Item1','Item2']
# read csv adding column names
data = pandas.read_csv('/Users/Simon/DropBox/Work/Datasets/lagtest.csv', names=colnames)
# create a dataframe with info on dates for first column
datelist1 = data[['Date', 'Item1']]
# create a dataframe with info on dates for first column
datelist2 = data[['Date', 'Item2']]
bigdatelist = datelist1.append(datelist2)
print bigdatelist
但它给了我这个:
Date Item1 Item2
0 1975 a NaN
1 1976 b NaN
2 1977 b NaN
3 1977 a NaN
4 1978 c NaN
5 1979 e NaN
6 1980 a NaN
0 1975 NaN b
1 1976 NaN c
2 1977 NaN a
3 1977 NaN b
4 1978 NaN d
5 1979 NaN f
6 1980 NaN f
我希望行号连续,并将最后两列合并为一列.有什么建议?
解决方法:
您正在寻找pd.melt.
假设您将此作为数据帧
>>> df
Date item1 item2
0 1975 a b
1 1976 b c
2 1977 b a
3 1977 a b
4 1978 c d
5 1979 e f
6 1980 a f
[7 rows x 3 columns]
现在用这个:
pd.melt(df, id_vars='year')['year','value']
得到你需要的东西.
>>> pd.melt(df, id_vars='Date')[['Date','value']]
Date value
0 1975 a
1 1976 b
2 1977 b
3 1977 a
4 1978 c
5 1979 e
6 1980 a
7 1975 b
8 1976 c
9 1977 a
10 1977 b
11 1978 d
12 1979 f
13 1980 f
[14 rows x 2 columns]
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。