繁体   English   中英

如何将列表中的值分配给 dataframe 中的列/行?

[英]How to assign the values in a list to a column/row in a dataframe?

如何将列表中的值分配给 python dataframe 中的列/行?

我只能使用以下命令反之亦然: list_name = df.iloc[x, y] 但是,当我尝试命令df.iloc[x, y] = list_name时,我未能将 list_name 中的值转换为df.iloc[x, y]

在这种情况下,将 list_name 中的值转换为df.iloc[x, y]的正确命令应该是什么?

不幸的是, iloc索引并不是为设置而设计的。 但是,如果您想让行x和列y像示例中那样动态,则有一些解决方法。

对于以下内容,我使用了pandas.Dataframe文档示例,我们从 dataframe 开始,如下所示。

my_dict = [{'a': 1, 'b': 2, 'c': 3, 'd': 4},
          {'a': 100, 'b': 200, 'c': 300, 'd': 400},
          {'a': 1000, 'b': 2000, 'c': 3000, 'd': 4000 }]

df = pandas.DataFrame(my_dict)

第 1 步:获取行

很简单,您可以通过df.iloc[x]获得您的行。 如果你有x = 1 ,在上面的例子中,我们会得到:

> df.iloc[x]
a    100
b    200
c    300
d    400

当我们有这样的一行时,我们可以通过使用索引'c'获得该值300

> df.iloc[x]['c']
300

但是,如果您只有列索引,则需要先获取此名称。

第二步:获取列名

要将索引y转换为列名,我们可以使用dataframe axes属性,如下所示:

> y = 2
> df.axes[1][y]
c

第3步:把它放在一起

现在,如果我们想使用xy来引用 dataframe 中的特定条目,我们可以通过先获取row然后获取column来实现,如下所示:

row = df.iloc[x]
column = df.axes[1][y]
row[column] = desired_value

或者,如果你想单行:

df.iloc[x][df.axes[1][y]]

完整示例

这是一个完整的例子。

import pandas

x = 1
y = 2

my_dict = [{'a': 1, 'b': 2, 'c': 3, 'd': 4},
          {'a': 100, 'b': 200, 'c': 300, 'd': 400},
          {'a': 1000, 'b': 2000, 'c': 3000, 'd': 4000 }]

df = pandas.DataFrame(my_dict)

desired_value = 999

row = df.iloc[x]
column = df.axes[1][y]
row[column] = desired_value

print(df)

最后的打印语句给了我们:

      a     b     c     d
0     1     2     3     4
1   100   200   999   400
2  1000  2000  3000  4000

注意我们用row[column] = desired_value设置的999

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM