我有一个数据框 df1,看起来像这样:
cpc count gau
F21S41/32 5 {2875}
F21S41/147 21 {2875}
F21S41/692 20 {2875}
B60Q1/0041 15 {2683, 2875, 2844}
F21S43/40 15 {2875}
F21S41/435 14 {2875}
对于每一行,我想将计数乘以 gau 以生成一个名为 w_gau
的新列。
最终,我希望 df1 看起来像这样:
cpc count gau w_gau
F21S41/32 5 {2875} ['2875', '2875', '2875', '2875', '2875']
F21S41/147 3 {2875} ['2875', '2875', '2875']
F21S41/692 2 {2875} ['2875', '2875']
B60Q1/0041 2 {2683, 2875, 2844} ['2683', '2875', '2844', '2683', '2875', '2844', '2683', '2875', '2844']
F21S43/40 3 {2875} ['2875', '2875', '2875']
F21S41/435 4 {2875} ['2875', '2875', '2875', '2875']
我已经有了将列表展平为单个列表并计算每个字符串出现次数的代码。
我的问题是如何将 df1 中的 gau
转换为可以乘以整数的列表列表?
我试过:
In [16]: df1.gau.tolist()
但这会将列中的所有内容转换为一个列表。我需要每一行包含一个列表,每个字符串或 int 是列表中的一个字符串。
编辑:gau 是一个字符串,而不是一个整数
df1.dtypes
Out[24]:
cpc object
count int64
gau object
w_gau object
dtype: object
最佳答案
当你在做这样愚蠢的事情时,你应该停下来重新考虑你的方法。
也就是说,你要了剪刀,它们就在这里
df['gau'].apply(list) * df['count']
作为一个新的列
df.assign(w_gau=df['gau'].apply(list) * df['count'])
如果您的 gau
列是字符串,请运行此命令将它们转换为集合。
from ast import literal_eval
df['gau'] = df['gau'].apply(literal_eval)
然后运行其他代码。
关于python-3.x - 将包含集合的数据框列的每一行转换为包含列表的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51843266/