我已经看到了许多与我的问题相关的链接:
如何从字典内的嵌套列表中删除多余的方括号?
删除Dataframe中的方括号
删除Dataframe中的方括号
但这些都不起作用
下面是我的例子:df1
column1 column2 column3 ..... upto 'n' number of columns
[data1] data1 data1
NAN data2 data2
[data2] data3 [data3, data3, testing how are you guys hope you guys are doing :)]
[data3] data3 [data4, dummy text to test to test test test]
NAN data4 [data5]
下面是我试过的代码:
df1[column1] = df[column1].str[0]
# not working !
# want to give df1 instead of df1[columns] because there are lot of
# columns
我只想删除括号,而不是其他任何东西,并且只想给出数据框而不是列,因为有很多列!
预期输出:
column1 column2 column3 ..... upto 'n' number of columns
data1 data1 data1
NAN data2 data2
data2 data3 data3, data3, testing how are you guys hope you guys are doing :)
data3 data3 data4, dummy text to test to test test test
NAN data4 data5
尝试使用apply
,explode
和groupby
:
>>> df.apply(lambda x: x.explode().astype(str).groupby(level=0).agg(", ".join))
column1 column2 column3
0 data1 data1 data1
1 nan data2 data2
2 data2 data3 data3, data3, testing how are you guys hope yo...
3 data3 data3 data4, dummy text to test to test test test
4 nan data4 data5
- 使用
pandas.explode()
将每个列表元素转换为自己的行,复制索引值。 - 则
groupby
相同的指标值,利用str.join()
进行汇总。 - 使用
apply
对DataFrame的所有列应用相同的函数
for i in range(0, df.shape[0]):
df1['column1'][i] = str(df['column1'][i]).strip('[]')
我没有用一个示例数据框架来测试它,但以我使用pandas的经验,它应该可以工作。
编辑:此测试代码有效
import pandas as pd
df = pd.DataFrame({'column': ['test', '[test]']})
df1 = pd.DataFrame({'column1': ['a', 'b']})
for i in range(0, df.shape[0]):
df1['column1'][i] = str(df['column'][i]).strip('[]')