python - 如何一次将熊猫数据框分成n个子列表?
问题描述
我有一个由推文及其作者组成的数据框,共有 45 位作者。我想一次将数据框分成 2 个作者的组,以便以后可以将它们导出到 csv 文件中。
我尝试使用以下内容:(假设作者位于名为“B”的列中,而推文位于名为“A”的列中)
df.set_index(keys=['B'],drop=False,inplace=True)
authors = df['B'].unique().tolist()
为了分隔列表:
dgroups =[]
for i in range(0,len(authors)-1,2):
dgroups.append(df.loc[df.B==authors[i]])
dgroups.extend(df.loc[df.B ==authors[i+1]])
但相反,它给了我这样的子列表:
dgroups = [['A'],['B'],
[tweet,author],
['A'],['B'],
[tweet,author2]]
在此之前,我能够将它们正确地划分为从上一个链接1派生的 45 个子列表,如下所示:
for i in authors:
groups.append(df.loc[df.B==i])
那么我将如何为 2 位作者或 3 位作者或类似的那样做呢?
编辑:来自@Jonathan Leon 的回答,我想我会做以下事情,这有效但不是动态解决方案,而且我猜效率低下,特别是如果 n>3 :
dgroups= []
for i in range(2,len(authors)+1,2):
tempset1=[]
tempset2=[]
tempset1 = df.loc[df.B==authors[i-2]]
if(i-1 != len(authors)):
tempset2=df.loc[df.B ==authors[i-1]]
dgroups.append(tempset1.append(tempset2))
else:
dgroups.append(tempset1)
解决方案
这会错误地导入外语,但逻辑可以为每两个作者创建一个新的 csv。
pd.read_csv('TrainDataAuthorAttribution.csv')
# df.groupby('B').count()
authors=df.B.unique().tolist()
auths_in_subset = 2
for i in range(auths_in_subset, len(authors)+auths_in_subset, auths_in_subset):
# print(authors[i-auths_in_subset:i])
dft = df[df.B.isin(authors[i-auths_in_subset:i])]
# print(dft)
dft.to_csv('df' + str(i) + '.csv')
推荐阅读
- javascript - ExtJS 4.2 textfield 用两种颜色设置文本
- javascript - 为什么PHP收不到AJAX发出的post请求
- javascript - navigator.mediaDevices.getUserMedia 在 ios 设备中显示黑屏
- vue.js - 如何存储购物车物品?饼干?
- python - 如何在特定日期自动触发 python 脚本?
- python - 使用 python pandas pivot 时保持秩序
- firebase - Firestore HTTP Insomnia 查询:HTTP/2 框架层中的流错误
- javascript - 在 aws-sdk 中为 sqs 设置 dataType JSON
- python - 具有日期时间索引的多列上的 Pandas 滚动窗口
- cypress - 赛普拉斯模拟地理定位