use*_*006 5 python dataframe pandas
是否有一个pandas函数来转换此数据,因此它将列显示为a,b,c,d,e或数据字段内的任何内容,并且行计算有多少字母.
import pandas as pd
trans = pd.read_table('output.txt', header=None, index_col=0)
print trans
>>>
1 2 3 4
0
11 a b c NaN
666 a d e NaN
10101 b c d NaN
1010 a b c d
414147 b c NaN NaN
10101 a b d NaN
1242 d e NaN NaN
101 a b c d
411 c d e NaN
444 a b c NaN
Run Code Online (Sandbox Code Playgroud)
相反,我希望输出是这样的:
a b c d e
0
11 1 1 1 NaN NaN
666 1 NaN NaN 1 1
Run Code Online (Sandbox Code Playgroud)
函数.stack()几乎完成它但格式错误.
你也可以使用熊猫 get_dummies()
pd.get_dummies(df.unstack().dropna()).groupby(level=1).sum()
Run Code Online (Sandbox Code Playgroud)
结果是:
a b c d e
0
11 1 1 1 0 0
666 1 0 0 1 1
10101 0 1 1 1 0
1010 1 1 1 1 0
414147 0 1 1 0 0
10101 1 1 0 1 0
1242 0 0 0 1 1
101 1 1 1 1 0
411 0 0 1 1 1
444 1 1 1 0 0
Run Code Online (Sandbox Code Playgroud)
你可以用你想要的NaN替换零.
它在一行中有点模糊.df.unstack().dropna()基本上将你的DataFrame扁平化为一系列并删除al NaN.在get_dummies给出的字母所有出现的表,但在拆散数据帧每个级别.然后,分组和总和将索引与原始形状组合.
| 归档时间: |
|
| 查看次数: |
1500 次 |
| 最近记录: |