我想使用Python panda追加(合并)一个文件夹中的所有csv文件。
例如:假设文件夹有两个csv文件test1.csv
和test2.csv
,如下所示:
A_Id P_Id CN1 CN2 CN3
AAA 111 702 709 740
BBB 222 1727 1734 1778
以及
A_Id P_Id CN1 CN2 CN3
CCC 333 710 750 750
DDD 444 180 734 778
所以我写的python脚本是这样的:
#!/usr/bin/python
import pandas as pd
import glob
all_data = pd.DataFrame()
for f in glob.glob("testfolder/*.csv"):
df = pd.read_csv(f)
all_data = all_data.append(df)
all_data.to_csv('testfolder/combined.csv')
虽然combined.csv
看起来有所有附加行,但它看起来如下所示:
CN1 CN2 CN3 A_Id P_Id
0 710 750 750 CCC 333
1 180 734 778 DDD 444
0 702 709 740 AAA 111
1 1727 1734 1778 BBB 222
它应该看起来像这样:
A_ID P_Id CN1 CN2 CN2
AAA 111 702 709 740
BBB 222 1727 1734 1778
CCC 333 110 356 123
DDD 444 220 256 223
- 为什么前两列移到末尾?**
- 为什么它附加在第一行而不是最后一行?**
我漏掉了什么?我怎样才能得到第一列中的0和1?
P. S:由于这些是大的csv文件,我想到了使用Pandas。
8条答案
按热度按时间n3schb8v1#
试试这个...
ss2ws0br2#
从版本0.23.0开始,您可以阻止
append()
方法对最终追加的DataFrame进行排序。nwnhqdif3#
我也遇到过同样的问题,而且很痛苦。我设法通过在源 Dataframe 被附加到最终 Dataframe 后重新组织列来解决它。它看起来像这样:
由于您的问题是从近两年前,我张贴的解决方案,为我工作的enyone其他谁也将面临类似的问题.
ni65a41a4#
您可以使用reindex更改为原始顺序:
我在这里看到这个(更多细节在链接):https://github.com/pandas-dev/pandas/issues/4588#issuecomment-44421883
qq24tv8q5#
我调整了代码如下。注解行。
xytpbqjk6#
请尝试:
df = df.append(pd.DataFrame(Added_rows).T)
myzjeezk7#
如果您创建了 Dataframe ,并按照您想要的方式设置了列,那么append将符合此要求
iqxoj9l98#
all_data = all_data.append(df, ignore_index=True)
输入ignore_index=True,这样顺序就不会改变。默认值是
False
,所以你需要改变它。