Pandas 将行元素合并为一个
Pandas combine row element in one
我有一个由 CSV 填充的 Pandas 数据框,之后我读取列并按行中的元素(对于列中的每个元素)进行迭代,并将该元素写入文件中。我的问题是我想将行中的元素合并为一个元素。
假设我有 A 到 Z 列,假设它的元素是 1 到 23。假设我只想在一个元素中加入数字 9 和 10(I 和 J 列)(I 和 J 列变为一个,它的值变为 [9,10])
如何使用 pandas(迭代时)实现该目标?
我的代码很长,但你可以找到它here. I've tried groupby但我认为它只适用于布尔值和整数(如果我错了请纠正我)
此外,我还是 Python 的新手,非常感谢对我的代码提出任何建议!
这是一个例子。它添加了一个新列,其中每个条目都是另外两个列的列表。希望对您有所帮助!
df= pd.DataFrame(np.random.randn(10,4))
df[4]= [[df[2][x],df[3][x]] for x in range(df.shape[0])]
您可以连接列,然后使用 numpy 的 tolist()
转换为列表:
In [56]: df = pd.DataFrame(dict(A=[1,1,1], I=[9,9,9], J=[10,10,10]))
In [57]: df
Out[57]:
A I J
0 1 9 10
1 1 9 10
2 1 9 10
In [58]: df["IJ"] = pd.concat((df.I, df.J), axis=1).values.tolist()
In [59]: df.drop(["I","J"], axis=1)
Out[59]:
A IJ
0 1 [9, 10]
1 1 [9, 10]
2 1 [9, 10]
我有一个由 CSV 填充的 Pandas 数据框,之后我读取列并按行中的元素(对于列中的每个元素)进行迭代,并将该元素写入文件中。我的问题是我想将行中的元素合并为一个元素。
假设我有 A 到 Z 列,假设它的元素是 1 到 23。假设我只想在一个元素中加入数字 9 和 10(I 和 J 列)(I 和 J 列变为一个,它的值变为 [9,10])
如何使用 pandas(迭代时)实现该目标?
我的代码很长,但你可以找到它here. I've tried groupby但我认为它只适用于布尔值和整数(如果我错了请纠正我)
此外,我还是 Python 的新手,非常感谢对我的代码提出任何建议!
这是一个例子。它添加了一个新列,其中每个条目都是另外两个列的列表。希望对您有所帮助!
df= pd.DataFrame(np.random.randn(10,4))
df[4]= [[df[2][x],df[3][x]] for x in range(df.shape[0])]
您可以连接列,然后使用 numpy 的 tolist()
转换为列表:
In [56]: df = pd.DataFrame(dict(A=[1,1,1], I=[9,9,9], J=[10,10,10]))
In [57]: df
Out[57]:
A I J
0 1 9 10
1 1 9 10
2 1 9 10
In [58]: df["IJ"] = pd.concat((df.I, df.J), axis=1).values.tolist()
In [59]: df.drop(["I","J"], axis=1)
Out[59]:
A IJ
0 1 [9, 10]
1 1 [9, 10]
2 1 [9, 10]